/*******************************************************************************
*                                                                              *
* This file provides an interface to the ANN plugin. It is to be used in a     *
* virtual machine to handle easily the universe communication.                 *
*                                                                              *
*******************************************************************************/

#ifndef __ANN_PLUGIN_INTERFACE_H__
#define __ANN_PLUGIN_INTERFACE_H__

////////////////////////////////////////////////////////////////////////////////
// Includes
////////////////////////////////////////////////////////////////////////////////

#include "SCSystem.hpp"
#include "ANNMacros.hpp"
#include <vector>
#include <string>

////////////////////////////////////////////////////////////////////////////////
// Implementation
////////////////////////////////////////////////////////////////////////////////

class ANNPluginInterface {

	public:
		
		/**
		 *	Sets a sample to evaluate.
		*/
		static void Evaluate(
			SC::SCSystem &,
			const std::vector<std::string> &,
			const bool = true
		);

		/**
		 *	Sets the learning information.
		*/
		static void Learn(
			SC::SCSystem &,
			const std::vector<double> &
		);

		/**
		 *	Gets the current output.
		*/
		static const std::vector<double> GetOutput(const SC::SCSystem &);

};

////////////////////////////////////////////////////////////////////////////////

#endif
